Complement a dos

El complement a dos és una operació matemàtica per a nombres binaris. S'utilitza en informàtica com a mètode per a la representació de nombres amb signe.

El complement a dos d'un nombre de N bits es defineix com el seu complement respecte de 2N. La suma d'un nombre i el seu complement a dos és 2N. Per exemple, per al nombre binari de tres bits 010₂ (210 en base 10), el seu complement a 2 és 110₂, perquè 010₂ + 110₂ = 1000₂ (210 + 610 = 810, que és 23).

En aquest exemple, el número binari 010₂ codifica l'enter amb signe 210. El seu complement a dos, 110₂, codifica l'invers: -210. En altres paraules, per invertir el signe de la majoria d'enters (tots menys un), es pot utilitzar el complement a dos de la seva representació binària. La taula de la dreta il·lustra aquesta propietat.

Enters amb signe de 3 bits
Valor
decimal
Representació
complement a dos
0 000
1 001
2 010
3 011
−4 100
−3 101
−2 110
−1 111

El complement a dos es calcula invertint els dígits i afegint un 1: 010₂ → 101₂ + 1₂ = 110₂

Enters amb signe de 8 bits
Valor
decimal
Representació
complement a dos
0 0000 0000
1 0000 0001
2 0000 0010
... ...
126 0111 1110
127 0111 1111
−128 1000 0000
−127 1000 0001
−126 1000 0010
... ...
−2 1111 1110
−1 1111 1111

Matemàticament, complement a dos d'un nombre natural N que, expressat en el sistema binari està compost per n dígits, es defineix com:

Vegem un exemple: prenem el nombre que, quan s'expressa en binari és , amb 3 dígits, i calculem el seu complement a dos:

, ; i, per tant:

Pot semblar complicat, però és molt fàcil obtenir el complement a dos d'un nombre a partir del seu complement a u, perquè el complement a dos d'un nombre binari és una unitat més gran que el seu complement a u, és a dir:

Noteu que en aquest exemple, on s'ha limitat el nombre de bits a 3, no seria possible distingir entre el -2 i el 7 (el 7 en binari és 110₂). En realitat, un nombre en complement a dos s'expressa amb una quantitat arbitrària d'uns a l'esquerra, de la mateixa manera que un nombre binari positiu s'expressa amb una quantitat arbitrària de zeros. Així, el -45, expressat en complement a dos utilitzant 8 bits seria 11010011, mentre que el 19 seria 00010011; i expressat en 16 bits serien 1111111111010011 i 0000000000010011 respectivament.

La utilitat principal del complement a dos es troba en les operacions matemàtiques amb nombres binaris. En particular, la resta de nombres binaris es facilita molt utilitzant el complement a dos: la resta de dos nombres binaris es pot obtenir sumant al minuend el complement a dos del subtrahend.


Developed by StudentB